package android.ijiajiao.util;

import java.beans.PropertyVetoException;
//import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//import javax.naming.Context;
//import javax.naming.InitialContext;
////import javax.naming.NamingException;
//import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

//import com.mchange.v2.c3p0.ComboPooledDataSource;
//import com.mysql.jdbc.Connection;

//所有数据库连接都要用到此类
public class JDBCConnectUtil {

	
	
//	public static Connection getConnection()  {
//		Connection conn =null;
//		try {
//			 Context cxt = new InitialContext();
//				
//			 DataSource ds = (DataSource) cxt.lookup("java:comp/env/jdbc/mysql");
//			  conn = ds.getConnection();	 
//		} catch (Exception e) {
//			// TODO: handle exception
//		}
//		
//		return conn;
//		
//		
//	}
	
	/**
	 * 相当于一个配置文件
	 */
	public static Connection getConnection() {
		
		
		
		// 创建按连接池
		ComboPooledDataSource ds = new ComboPooledDataSource();
		try {
			// 基本配置
			ds.setDriverClass("com.mysql.jdbc.Driver");// 加载数据库驱动
			ds.setJdbcUrl("jdbc:mysql://localhost:3306/ijiajiao");// 连接数据库
			ds.setUser("root");// 设置用户名
			ds.setPassword("root");// 设置密码

			// 设置连接池
			ds.setInitialPoolSize(20);// 连接池的初始化连接数
			ds.setMinPoolSize(20);// 设置连接池的最小连接数
			ds.setMaxPoolSize(100);// 设置连接池的最大连接数
			ds.setAcquireIncrement(29);// 如果连接池用完，每次增加多少个
			ds.setMaxStatements(500);// 设置连接池缓存最大语句的数据量
			ds.setMaxIdleTime(5000);// 如果一个连接多少时间没有活动，自动关闭这个连接，时间是毫秒

			return ds.getConnection();// 返回这个连接（底层会自动调用）
		} catch (PropertyVetoException | SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void close(ResultSet rs, Statement stmt, PreparedStatement ps, Connection conn) {
		if (null != rs) {
			try {
				rs.close();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (null != stmt) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (null != ps) {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (null != conn) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
}
